package com.eudon.design_pattern.behavioral.visitor;

/**
 * @author eudon
 * @description 抽象访问者接口 - 访问者模式中的抽象访问者
 * @date 2025/9/3
 * @email syd19970616@gmail.com
 * @address <a href="https://gitee.com/eudon">Gitee</a>
 */
public interface Visitor {
    
    /**
     * 访问PDF文件的方法
     * 这个方法会在PdfFile.accept()中被调用
     * 具体的访问者类需要实现这个方法来定义对PDF文件的具体操作
     * 
     * @param pdfFile PDF文件对象
     */
    void visit(PdfFile pdfFile);
    
    /**
     * 访问PPT文件的方法
     * 这个方法会在PPTFile.accept()中被调用
     * 具体的访问者类需要实现这个方法来定义对PPT文件的具体操作
     * 
     * @param pptFile PPT文件对象
     */
    void visit(PPTFile pptFile);
    
    /**
     * 访问Word文件的方法
     * 这个方法会在WordFile.accept()中被调用
     * 具体的访问者类需要实现这个方法来定义对Word文件的具体操作
     * 
     * @param wordFile Word文件对象
     */
    void visit(WordFile wordFile);
    
    /**
     * 获取访问者的名称
     * 用于标识不同的访问者类型
     * 
     * @return 访问者名称
     */
    String getVisitorName();
}